Imports Sys = System

Namespace Enhancements.Core.Logging
    ''' <summary>Base class for all possible formatter types. It is not intended for the common developer to inherit from it.</summary>
    Public MustInherit Class Formatter

        Friend Sub New()
        End Sub

        Friend __Configuration As FormatterConfiguration = Nothing
        ''' <summary>Gets and sets the configuration used by the instance. Implementers must override this procedure.</summary>
        Public MustOverride Property Configuration() As FormatterConfiguration

        Friend MustOverride Sub ___Format(ByVal _record As ___Record)

        Private __DisposeCalled As System.Boolean = False
        Friend Property ___DisposeCalled() As System.Boolean
            Get
                Return __DisposeCalled
            End Get
            Set(ByVal _value As System.Boolean)
                ___Assert.___IsDisposedNot("Formatter[instance]", ___DisposeCalled, True)
                ___Assert.___IsTrue("___DisposeCalled._value", _value, True)

                __DisposeCalled = _value
            End Set
        End Property
        Friend MustOverride Sub ___Dispose()

    End Class
End Namespace
